package com.example.li_han.service;

import com.example.li_han.dao.NewsTypeDao;
import com.example.li_han.pojo.NewsType;

import java.util.List;

/**
 * 新闻分类业务服务类
 */
public class NewsTypeService {
    private NewsTypeDao newsTypeDao = new NewsTypeDao();

    /**
     * 获取所有分类列表
     */
    public List<NewsType> getAllNewsTypes() {
        return newsTypeDao.getAllNewsTypes();
    }

    /**
     * 根据ID获取分类
     */
    public NewsType getNewsTypeById(int typeId) {
        return newsTypeDao.getNewsTypeById(typeId);
    }

    /**
     * 添加分类
     */
    public int addNewsType(NewsType newsType) {
        // 检查分类名称是否已存在
        if (newsTypeDao.isTypeNameExists(newsType.getTypeName())) {
            throw new RuntimeException("分类名称已存在");
        }
        return newsTypeDao.addNewsType(newsType);
    }

    /**
     * 更新分类
     */
    public int updateNewsType(NewsType newsType) {
        // 检查分类名称是否被其他分类使用
        NewsType existingType = newsTypeDao.getNewsTypeById(newsType.getTypeId());
        if (existingType != null && !existingType.getTypeName().equals(newsType.getTypeName())) {
            if (newsTypeDao.isTypeNameExists(newsType.getTypeName())) {
                throw new RuntimeException("分类名称已存在");
            }
        }
        return newsTypeDao.updateNewsType(newsType);
    }

    /**
     * 删除分类
     */
    public int deleteNewsType(int typeId) {
        // 检查分类是否被新闻使用
        if (newsTypeDao.isTypeInUse(typeId)) {
            throw new RuntimeException("该分类下有新闻，无法删除");
        }
        return newsTypeDao.deleteNewsType(typeId);
    }

    /**
     * 检查分类名称是否存在
     */
    public boolean isTypeNameExists(String typeName) {
        return newsTypeDao.isTypeNameExists(typeName);
    }
}